package com.malou.server.ventas.telas;

import java.sql.SQLException;
import java.util.List;

import com.extjs.gxt.ui.client.data.BasePagingLoadResult;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.malou.client.ventas.telas.Tela;
import com.malou.server.base.Conexion;
import com.malou.server.base.util.GxtGridPaginate;


public class Telas {
	private static SqlMapClient sqlMap = null;
	public static Integer errorTipo = 0;
	public static Integer parametro = 0;
	
	@SuppressWarnings("unchecked")
	public static PagingLoadResult<Tela> getPaginate(GxtGridPaginate paginate){		     
		
		sqlMap = Conexion.getSqlMap();
		paginate.setLimit();
		if(paginate.order.equals("")){
			paginate.order = " order by id desc";
		}
		List<Tela> data = null;
		try {
			data = sqlMap.queryForList("paginateTela", paginate);				
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return new BasePagingLoadResult<Tela>(data, paginate.offset, count(paginate));
	}
	
	public static Integer count(GxtGridPaginate paginate){
		Integer count = null;
		try {
			count = (Integer) sqlMap.queryForObject("countTela", paginate);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return count;
	}
	
	public static boolean save(Tela tp){
		boolean retorno = true;		 
	
		sqlMap = Conexion.getSqlMap();
		try {
			if(isValid(tp)){
				if(tp.getId() != null){
					//tp.setCodigo(getNumeracion(tp.getCodigo()));
					sqlMap.update("updateTela", tp);
				}else{
					//tp.setCodigo(getNumeracion());
					sqlMap.insert("insertTela", tp);
				}
			}else
				retorno = false;
		} catch (SQLException e) {
			retorno = false;
			e.printStackTrace();			
		}
		return retorno;
	}
	
//	private static String getNumeracion(){
//		Series.sqlMap = sqlMap;
//		return Series.actualizarNumeracion("codigotela");
//	}
//	
//	private static String getNumeracion(String codigoedit){
//		Series.sqlMap = sqlMap;
//		Series.ultimonumero = codigoedit;		
//		return Series.actualizarNumeracion("codigotela");
//	}
	
	public static boolean delete(Integer id){
		boolean retorno = true;		 
		
		sqlMap = Conexion.getSqlMap();
		try {
			if(id != null)
				sqlMap.delete("deleteTela", id);
			else
				retorno = false;
		} catch (SQLException e) {
			retorno = false;
			e.printStackTrace();			
		}
		return retorno;
	}
	
	public static boolean deleteAll(String ids){
		boolean retorno = true;		   
		
		sqlMap = Conexion.getSqlMap();
		try {
			if(!ids.equals(""))
				sqlMap.delete("deleteTelas", ids);
			else
				retorno = false;
		} catch (SQLException e) {
			retorno = false;
			e.printStackTrace();			
		}
		return retorno;
	}
	
	private static boolean isValid(Tela tp){
		boolean retorno = true;
        Integer cant;
        try {        	
        	//Series.sqlMap = sqlMap;
        	/*if(!Series.hasSerieArticulo("codigotela")){
        		errorTipo = 1; //El color no tiene serie
                retorno = false;
        	}else*/ if(tp.getDescripcion() != null){
	         cant = (Integer)sqlMap.queryForObject("validaDescripcionTela", tp);
	             if(cant != 0){
	            	errorTipo = 2; //Ya existe esta tela;
	                retorno = false;
	            }else if(tp.getCodigo() != null){
	            	cant = (Integer)sqlMap.queryForObject("validaCodigoTela", tp);
	            	if(cant != 0){
		            	errorTipo = 3; //Ya existe este codigo de tela;
		                retorno = false;
		            }/*else if(Series.getLongitud("codigotela") != tp.getCodigo().length()){
		            	errorTipo = 4; //Este codigo de tela debe tener n caracteres;
		            	parametro = Series.getLongitud("codigotela");
		                retorno = false;
		            }*/
	            }
	        }	        
        } catch (SQLException e) {
			retorno = false;
			e.printStackTrace();			
		}
        return retorno;
	}
}
